using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;

namespace Odb_base.Interop
{
  public enum IMAPI_FEATURE_PAGE_TYPE
  {
    IMAPI_FEATURE_PAGE_TYPE_PROFILE_LIST = 0,
    IMAPI_FEATURE_PAGE_TYPE_CORE = 1,
    IMAPI_FEATURE_PAGE_TYPE_MORPHING = 2,
    IMAPI_FEATURE_PAGE_TYPE_REMOVABLE_MEDIUM = 3,
    IMAPI_FEATURE_PAGE_TYPE_WRITE_PROTECT = 4,
    IMAPI_FEATURE_PAGE_TYPE_RANDOMLY_READABLE = 16,
    IMAPI_FEATURE_PAGE_TYPE_CD_MULTIREAD = 29,
    IMAPI_FEATURE_PAGE_TYPE_CD_READ = 30,
    IMAPI_FEATURE_PAGE_TYPE_DVD_READ = 31,
    IMAPI_FEATURE_PAGE_TYPE_RANDOMLY_WRITABLE = 32,
    IMAPI_FEATURE_PAGE_TYPE_INCREMENTAL_STREAMING_WRITABLE = 33,
    IMAPI_FEATURE_PAGE_TYPE_SECTOR_ERASABLE = 34,
    IMAPI_FEATURE_PAGE_TYPE_FORMATTABLE = 35,
    IMAPI_FEATURE_PAGE_TYPE_HARDWARE_DEFECT_MANAGEMENT = 36,
    IMAPI_FEATURE_PAGE_TYPE_WRITE_ONCE = 37,
    IMAPI_FEATURE_PAGE_TYPE_RESTRICTED_OVERWRITE = 38,
    IMAPI_FEATURE_PAGE_TYPE_CDRW_CAV_WRITE = 39,
    IMAPI_FEATURE_PAGE_TYPE_MRW = 40,
    IMAPI_FEATURE_PAGE_TYPE_ENHANCED_DEFECT_REPORTING = 41,
    IMAPI_FEATURE_PAGE_TYPE_DVD_PLUS_RW = 42,
    IMAPI_FEATURE_PAGE_TYPE_DVD_PLUS_R = 43,
    IMAPI_FEATURE_PAGE_TYPE_RIGID_RESTRICTED_OVERWRITE = 44,
    IMAPI_FEATURE_PAGE_TYPE_CD_TRACK_AT_ONCE = 45,
    IMAPI_FEATURE_PAGE_TYPE_CD_MASTERING = 46,
    IMAPI_FEATURE_PAGE_TYPE_DVD_DASH_WRITE = 47,
    IMAPI_FEATURE_PAGE_TYPE_DOUBLE_DENSITY_CD_READ = 48,
    IMAPI_FEATURE_PAGE_TYPE_DOUBLE_DENSITY_CD_R_WRITE = 49,
    IMAPI_FEATURE_PAGE_TYPE_DOUBLE_DENSITY_CD_RW_WRITE = 50,
    IMAPI_FEATURE_PAGE_TYPE_LAYER_JUMP_RECORDING = 51,
    IMAPI_FEATURE_PAGE_TYPE_CD_RW_MEDIA_WRITE_SUPPORT = 55,
    IMAPI_FEATURE_PAGE_TYPE_BD_PSEUDO_OVERWRITE = 56,
    IMAPI_FEATURE_PAGE_TYPE_DVD_PLUS_R_DUAL_LAYER = 59,
    IMAPI_FEATURE_PAGE_TYPE_BD_READ = 64,
    IMAPI_FEATURE_PAGE_TYPE_BD_WRITE = 65,
    IMAPI_FEATURE_PAGE_TYPE_HD_DVD_READ = 80,
    IMAPI_FEATURE_PAGE_TYPE_HD_DVD_WRITE = 81,
    IMAPI_FEATURE_PAGE_TYPE_POWER_MANAGEMENT = 256,
    IMAPI_FEATURE_PAGE_TYPE_SMART = 257,
    IMAPI_FEATURE_PAGE_TYPE_EMBEDDED_CHANGER = 258,
    IMAPI_FEATURE_PAGE_TYPE_CD_ANALOG_PLAY = 259,
    IMAPI_FEATURE_PAGE_TYPE_MICROCODE_UPDATE = 260,
    IMAPI_FEATURE_PAGE_TYPE_TIMEOUT = 261,
    IMAPI_FEATURE_PAGE_TYPE_DVD_CSS = 262,
    IMAPI_FEATURE_PAGE_TYPE_REAL_TIME_STREAMING = 263,
    IMAPI_FEATURE_PAGE_TYPE_LOGICAL_UNIT_SERIAL_NUMBER = 264,
    IMAPI_FEATURE_PAGE_TYPE_MEDIA_SERIAL_NUMBER = 265,
    IMAPI_FEATURE_PAGE_TYPE_DISC_CONTROL_BLOCKS = 266,
    IMAPI_FEATURE_PAGE_TYPE_DVD_CPRM = 267,
    IMAPI_FEATURE_PAGE_TYPE_FIRMWARE_INFORMATION = 268,
    IMAPI_FEATURE_PAGE_TYPE_AACS = 269,
    IMAPI_FEATURE_PAGE_TYPE_VCPS = 272,
  }

  public enum IMAPI_MODE_PAGE_TYPE
  {
    IMAPI_MODE_PAGE_TYPE_READ_WRITE_ERROR_RECOVERY = 1,
    IMAPI_MODE_PAGE_TYPE_MRW = 3,
    IMAPI_MODE_PAGE_TYPE_WRITE_PARAMETERS = 5,
    IMAPI_MODE_PAGE_TYPE_CACHING = 8,
    IMAPI_MODE_PAGE_TYPE_POWER_CONDITION = 26,
    IMAPI_MODE_PAGE_TYPE_INFORMATIONAL_EXCEPTIONS = 28,
    IMAPI_MODE_PAGE_TYPE_TIMEOUT_AND_PROTECT = 29,
    IMAPI_MODE_PAGE_TYPE_LEGACY_CAPABILITIES = 42,
  }

  public enum IMAPI_MODE_PAGE_REQUEST_TYPE
  {
    IMAPI_MODE_PAGE_REQUEST_TYPE_CURRENT_VALUES = 0,
    IMAPI_MODE_PAGE_REQUEST_TYPE_CHANGABLE_VALUES = 1,
    IMAPI_MODE_PAGE_REQUEST_TYPE_DEFAULT_VALUES = 2,
    IMAPI_MODE_PAGE_REQUEST_TYPE_SAVED_VALUES = 3,
  }

  public enum IMAPI_READ_TRACK_ADDRESS_TYPE
  {
    IMAPI_READ_TRACK_ADDRESS_TYPE_LBA = 0,
    IMAPI_READ_TRACK_ADDRESS_TYPE_TRACK = 1,
    IMAPI_READ_TRACK_ADDRESS_TYPE_SESSION = 2,
  }

  public enum IMAPI_FORMAT2_DATA_MEDIA_STATE
  {
    [TypeLibVar(TypeLibVarFlags.FHidden)]
    IMAPI_FORMAT2_DATA_MEDIA_STATE_UNKNOWN = 0,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_OVERWRITE_ONLY = 1,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_RANDOMLY_WRITABLE = 1,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK = 2,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE = 4,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_FINAL_SESSION = 8,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_INFORMATIONAL_MASK = 15,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_DAMAGED = 1024,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_ERASE_REQUIRED = 2048,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_NON_EMPTY_SESSION = 4096,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_WRITE_PROTECTED = 8192,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_FINALIZED = 16384,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_UNSUPPORTED_MEDIA = 32768,
    IMAPI_FORMAT2_DATA_MEDIA_STATE_UNSUPPORTED_MASK = 64512,
  }

  public enum IMAPI_FORMAT2_DATA_WRITE_ACTION
  {
    IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA = 0,
    IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA = 1,
    IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE = 2,
    IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER = 3,
    IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA = 4,
    IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION = 5,
    IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED = 6,
  }

  public enum IMAPI_MEDIA_PHYSICAL_TYPE
  {
    IMAPI_MEDIA_TYPE_UNKNOWN = 0,
    IMAPI_MEDIA_TYPE_CDROM = 1,
    IMAPI_MEDIA_TYPE_CDR = 2,
    IMAPI_MEDIA_TYPE_CDRW = 3,
    IMAPI_MEDIA_TYPE_DVDROM = 4,
    IMAPI_MEDIA_TYPE_DVDRAM = 5,
    IMAPI_MEDIA_TYPE_DVDPLUSR = 6,
    IMAPI_MEDIA_TYPE_DVDPLUSRW = 7,
    IMAPI_MEDIA_TYPE_DVDPLUSR_DUALLAYER = 8,
    IMAPI_MEDIA_TYPE_DVDDASHR = 9,
    IMAPI_MEDIA_TYPE_DVDDASHRW = 10,
    IMAPI_MEDIA_TYPE_DVDDASHR_DUALLAYER = 11,
    IMAPI_MEDIA_TYPE_DISK = 12,
    IMAPI_MEDIA_TYPE_DVDPLUSRW_DUALLAYER = 13,
    IMAPI_MEDIA_TYPE_HDDVDROM = 14,
    IMAPI_MEDIA_TYPE_HDDVDR = 15,
    IMAPI_MEDIA_TYPE_HDDVDRAM = 16,
    IMAPI_MEDIA_TYPE_BDROM = 17,
    IMAPI_MEDIA_TYPE_BDR = 18,
    IMAPI_MEDIA_TYPE_MAX = 19,
    IMAPI_MEDIA_TYPE_BDRE = 19,
  }

  public enum IMAPI_MEDIA_WRITE_PROTECT_STATE
  {
    IMAPI_WRITEPROTECTED_UNTIL_POWERDOWN = 1,
    IMAPI_WRITEPROTECTED_BY_CARTRIDGE = 2,
    IMAPI_WRITEPROTECTED_BY_MEDIA_SPECIFIC_REASON = 4,
    IMAPI_WRITEPROTECTED_BY_SOFTWARE_WRITE_PROTECT = 8,
    IMAPI_WRITEPROTECTED_BY_DISC_CONTROL_BLOCK = 16,
    IMAPI_WRITEPROTECTED_READ_ONLY_MEDIA = 16384,
  }

  public enum IMAPI_PROFILE_TYPE
  {
    IMAPI_PROFILE_TYPE_INVALID = 0,
    IMAPI_PROFILE_TYPE_NON_REMOVABLE_DISK = 1,
    IMAPI_PROFILE_TYPE_REMOVABLE_DISK = 2,
    IMAPI_PROFILE_TYPE_MO_ERASABLE = 3,
    IMAPI_PROFILE_TYPE_MO_WRITE_ONCE = 4,
    IMAPI_PROFILE_TYPE_AS_MO = 5,
    IMAPI_PROFILE_TYPE_CDROM = 8,
    IMAPI_PROFILE_TYPE_CD_RECORDABLE = 9,
    IMAPI_PROFILE_TYPE_CD_REWRITABLE = 10,
    IMAPI_PROFILE_TYPE_DVDROM = 16,
    IMAPI_PROFILE_TYPE_DVD_DASH_RECORDABLE = 17,
    IMAPI_PROFILE_TYPE_DVD_RAM = 18,
    IMAPI_PROFILE_TYPE_DVD_DASH_REWRITABLE = 19,
    IMAPI_PROFILE_TYPE_DVD_DASH_RW_SEQUENTIAL = 20,
    IMAPI_PROFILE_TYPE_DVD_DASH_R_DUAL_SEQUENTIAL = 21,
    IMAPI_PROFILE_TYPE_DVD_DASH_R_DUAL_LAYER_JUMP = 22,
    IMAPI_PROFILE_TYPE_DVD_PLUS_RW = 26,
    IMAPI_PROFILE_TYPE_DVD_PLUS_R = 27,
    IMAPI_PROFILE_TYPE_DDCDROM = 32,
    IMAPI_PROFILE_TYPE_DDCD_RECORDABLE = 33,
    IMAPI_PROFILE_TYPE_DDCD_REWRITABLE = 34,
    IMAPI_PROFILE_TYPE_DVD_PLUS_RW_DUAL = 42,
    IMAPI_PROFILE_TYPE_DVD_PLUS_R_DUAL = 43,
    IMAPI_PROFILE_TYPE_BD_ROM = 64,
    IMAPI_PROFILE_TYPE_BD_R_SEQUENTIAL = 65,
    IMAPI_PROFILE_TYPE_BD_R_RANDOM_RECORDING = 66,
    IMAPI_PROFILE_TYPE_BD_REWRITABLE = 67,
    IMAPI_PROFILE_TYPE_HD_DVD_ROM = 80,
    IMAPI_PROFILE_TYPE_HD_DVD_RECORDABLE = 81,
    IMAPI_PROFILE_TYPE_HD_DVD_RAM = 82,
    IMAPI_PROFILE_TYPE_NON_STANDARD = 65535,
  }

  public enum EmulationType
  {
    EmulationNone = 0,
    Emulation12MFloppy = 1,
    Emulation144MFloppy = 2,
    Emulation288MFloppy = 3,
    EmulationHardDisk = 4,
  }

  public enum PlatformId
  {
    PlatformX86 = 0,
    PlatformPowerPC = 1,
    PlatformMac = 2,
  }

  public enum FsiFileSystems
  {
    FsiFileSystemNone = 0,
    FsiFileSystemISO9660 = 1,
    FsiFileSystemJoliet = 2,
    FsiFileSystemUDF = 4,
    FsiFileSystemUnknown = 1073741824,
  }

  public enum FsiItemType
  {
    FsiItemNotFound = 0,
    FsiItemDirectory = 1,
    FsiItemFile = 2,
  }
}
